package com.freejava.jdbctest.services;

import com.freejava.jdbctest.dao.BookDao;
import com.freejava.jdbctest.entities.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * service是逻辑的业务层
 * 业务代码理论上来说都需要放在service层中
 * service中调用dao的实现
 * controller中调用service中的实现
 * 我们的BookService 逻辑非常简单，仅仅是调用了BookDao，并没有添加其他的业务逻辑
 * 我们使用了单元测试已经对BookDao的代码做了测试，那么就没有必要再次测试BookService
 * 在真实的项目开发中，逻辑会复杂很多，我们应该也要对Service层做单元测试
 */
@Service
public class BookService {
    /**
     * 从spring ioc容器中注入了BookDao
     */
    @Autowired
    BookDao bookDao;

    // 新增书籍
    public int add(Book book) {
        return bookDao.addBook(book);
    }

    // 通过ID获取单个书籍记录
    public Book getBookById(int id) {
        return bookDao.getBookById(id);
    }

    // 更新书籍信息
    public int update(Book book) {
        return bookDao.update(book);
    }

    // 删除单个书籍信息
    public int delete(int id) {
        return bookDao.delete(id);
    }

    // 获取所有书籍信息
    public List<Book> getAll() {
        return bookDao.getAll();
    }

    // 批量更新数据信息
    public int[] updateBatch(List<Book> books) {
        return bookDao.updateBatch(books);
    }


}
